﻿using HQS.TokenInterpolation.Tokens;

namespace HQS.TokenInterpolation
{
    public interface IDataSourcesVisitor
    {
        TokenRuntimeValue Visit(DefaultToken token);
        TokenRuntimeValue Visit(ForEach token);
        TokenRuntimeValue Visit(SubString token);
        TokenRuntimeValue Visit(Repeat token);
        TokenRuntimeValue Visit(Replace token);
        TokenRuntimeValue Visit(Coalesce token);
        TokenRuntimeValue Visit(Right token);
        TokenRuntimeValue Visit(Left token);
        TokenRuntimeValue Visit(Split token);
        TokenRuntimeValue Visit(PadRight token);
        TokenRuntimeValue Visit(PadLeft token);
        TokenRuntimeValue Visit(Compute token);
        TokenRuntimeValue Visit(Sum token);
        TokenRuntimeValue Visit(Average token);
        TokenRuntimeValue Visit(Minimum token);
        TokenRuntimeValue Visit(Maximum token);
        TokenRuntimeValue Visit(Join token);
        TokenRuntimeValue Visit(If token);
        TokenRuntimeValue Visit(Ceiling ceiling);
        TokenRuntimeValue Visit(Floor floor);
    }
}